/**
 * 自定义结构体的PBDS优先队列
 * 如有必要，还有可以使用标记数组去重，防止重复入队
 */
#include <bits/stdc++.h>
#include <bits/extc++.h>

struct _t{

    /// 返回true表示rhs的优先级更高
    bool operator < (const _t & rhs) const {

    }
};

/// 给pbds要用tr1
template<> struct std::tr1::hash<_t>{
    static std::size_t splitmix64(std::size_t x){
        x += 0x9e3779b97f4a7c15;
        x = (x ^ (x >> 30)) * 0xbf58476d1ce4e5b9;
        x = (x ^ (x >> 27)) * 0x94d049bb133111eb;
        return x ^ (x >> 31);        
    }

    std::size_t operator () (const _t & t) const {
        static const std::size_t FIXED_RANDOM = chrono::steady_clock::now().time_since_epoch().count();
        return splitmix64(FIXED_RANDOM + t.);  // 使用t的成员
    }
};

template<> struct std::equal_to<_t>{
    bool operator (const _t & lhs, const _t & rhs) const {
        return //
    }
};

__gnu_pbds::priority_queue<_t> Q;
__gnu_pbds::gp_hash_table<_t, unsigned long long> Flag;